package org.alis.rpc.proxy;


import java.io.Serializable;
import java.lang.invoke.SerializedLambda;
import java.lang.reflect.Method;

/**
 * SerializableFunction desc: 自定义一个序列化
 *
 * @author luochuan
 * @date 2020/9/30
 */
public interface SerializableFunction extends Serializable {
    /**
     * 获取名称
     * @return 名称
     * @throws Exception 异常
     */
    default String getName() throws Exception{
        Method write = this.getClass().getDeclaredMethod("writeReplace");
        write.setAccessible(true);
        SerializedLambda serializedLambda = (SerializedLambda) write.invoke(this);
        return serializedLambda.getImplMethodName();
    }
}
